React์ experimental_TracingMarker ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ๊ธ ์ฑ๋ฅ ์ถ์ ์ ์ํํ๊ณ , ๊ฐ๋ฐ์๊ฐ ๋ณ๋ชฉ ํ์์ ํจ๊ณผ์ ์ผ๋ก ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
React experimental_TracingMarker ๊ด๋ฆฌ์: ์ฑ๋ฅ ์ถ์ ์ฌ์ธต ๋ถ์
React๋ ์ง์์ ์ธ ๋ฐ์ ์ ํตํด ์ฑ๋ฅ๊ณผ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐ ๋ชฉํ๋ฅผ ๋ ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํฉ๋๋ค. ๊ทธ ์ค ํ๋๊ฐ experimental_TracingMarker ๊ด๋ฆฌ์์ธ๋ฐ, ์ด๋ ๊ณ ๊ธ ์ฑ๋ฅ ์ถ์ ์ ์ํด ์ค๊ณ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ ์ด ๊ธฐ๋ฅ์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ , ๋ชฉ์ , ๊ธฐ๋ฅ ๋ฐ React ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง ์ค๋ช
ํฉ๋๋ค.
์ฑ๋ฅ ์ถ์ ์ด๋ ๋ฌด์์ ๋๊น?
์ฑ๋ฅ ์ถ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ถ์ํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฒคํธ์ ๊ด๋ จ ํ์์คํฌํ๋ฅผ ๊ธฐ๋กํ์ฌ ์ฝ๋ ์กฐ๊ฐ์ ์คํ ์ค์ ๋ฐ์ํ๋ ์ผ์ ๋ํ ์์ธํ ํ์๋ผ์ธ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์๊ฐ์ ์ด๋์ ์๋นํ๊ณ ์๋์ง ์ดํดํ๊ณ ์ต์ ํํ ์์ญ์ ์ ํํ ์ฐพ์๋ด๋ ๋ฐ ๋ถ์ํ ์ ์์ต๋๋ค.
React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งฅ๋ฝ์์ ์ฑ๋ฅ ์ถ์ ์ ์ปดํฌ๋ํธ ๋ ๋๋ง, DOM ์ ๋ฐ์ดํธ ๋ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์คํ์ ์์๋๋ ์๊ฐ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณ๋ชฉ ํ์์ ์๋ณํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฝ๋ ์ต์ ํ, ์ ๋ฐ์ ์ธ ์๋ต์ฑ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ ํฅ์์ ๋ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
experimental_TracingMarker ๊ด๋ฆฌ์ ์๊ฐ
React์ ์คํ์ ๊ธฐ๋ฅ์ ์ผ๋ถ์ธ experimental_TracingMarker ๊ด๋ฆฌ์๋ ํ์ค ํ๋กํ์ผ๋ง ๋๊ตฌ์ ๋นํด ์ฑ๋ฅ ์ถ์ ์ ๋ํ ๋ณด๋ค ์ธ๋ถํ๋๊ณ ์ ์ด๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ถ์ ํ๋ ค๋ ํน์ ์ฝ๋ ์น์
์ ๋ํ๋ด๋ ์ฌ์ฉ์ ์ ์ ๋ง์ปค๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ง์ปค๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์น์
์ ์คํํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ์ฌ ์ฑ๋ฅ์ ๋ํ ์์ธํ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ํนํ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
- ๋๋ฆฐ ์ปดํฌ๋ํธ ์๋ณ: ๋ ๋๋งํ๋ ๋ฐ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ ์ฐพ์๋ ๋๋ค.
- ๋ณต์กํ ์ํธ ์์ฉ ๋ถ์: ์ฌ์ฉ์ ์ํธ ์์ฉ ๋ฐ ์ํ ์ ๋ฐ์ดํธ์ ์ฑ๋ฅ ์ํฅ์ ์ดํดํฉ๋๋ค.
- ์ต์ ํ ํจ๊ณผ ์ธก์ : ์ต์ ํ ์ ์ฉ ํ ์ป์ ์ฑ๋ฅ ํฅ์์ ์ ๋ํํฉ๋๋ค.
experimental_TracingMarker ๊ด๋ฆฌ์ ์๋ ๋ฐฉ์
experimental_TracingMarker ๊ด๋ฆฌ์๋ ์ถ์ ๋ง์ปค๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ API ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ์ฃผ์ ์ปดํฌ๋ํธ์ ํด๋น ๊ธฐ๋ฅ์ ๋ํ ๋ถ์์
๋๋ค.
TracingMarker(id: string, display: string): TracingMarkerInstance: ์ ์ถ์ ๋ง์ปค ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.id๋ ๋ง์ปค์ ๊ณ ์ ์๋ณ์์ด๊ณ ,display๋ ํ๋กํ์ผ๋ง ๋๊ตฌ์ ํ์๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ๋๋ค.TracingMarkerInstance.begin(): void: ํ์ฌ ๋ง์ปค ์ธ์คํด์ค์ ๋ํ ์ถ์ ์ ์์ํฉ๋๋ค. ์ด๋ ๋งํฌ๋ ์ฝ๋ ์น์ ์ด ์คํ์ ์์ํ ๋ ํ์์คํฌํ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.TracingMarkerInstance.end(): void: ํ์ฌ ๋ง์ปค ์ธ์คํด์ค์ ๋ํ ์ถ์ ์ ์ข ๋ฃํฉ๋๋ค. ์ด๋ ๋งํฌ๋ ์ฝ๋ ์น์ ์ด ์คํ์ ์๋ฃํ ๋ ํ์์คํฌํ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.begin()๊ณผend()์ฌ์ด์ ์๊ฐ ์ฐจ์ด๋ ๋งํฌ๋ ์น์ ์ ์คํ ์๊ฐ์ ๋ํ๋ ๋๋ค.
์ค์ ์์ : ์ปดํฌ๋ํธ ๋ ๋๋ง ์๊ฐ ์ถ์
experimental_TracingMarker ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ React ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์๊ฐ์ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ด ์์ ์์:
reactํจํค์ง์์unstable_TracingMarker๋ฅผ ๊ฐ์ ธ์ต๋๋ค.useRef๋ฅผ ์ฌ์ฉํ์ฌTracingMarker์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ๋ ๋๋ง ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ง๋๋๋ก ํฉ๋๋ค.useEffectํ ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ๋์ props๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค (๋ค์ ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐ) ์ถ์ ์ ์์ํฉ๋๋ค.useEffect๋ด์ ์ ๋ฆฌ ํจ์๋ ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๊ฑฐ๋ ๋ค์ ๋ค์ ๋ ๋๋ง ์ ์ ์ถ์ ์ด ์ข ๋ฃ๋๋๋ก ํฉ๋๋ค.begin()๋ฉ์๋๋ ์ปดํฌ๋ํธ ๋ ๋๋ง ์๋ช ์ฃผ๊ธฐ์ ์์ ๋ถ๋ถ์์ ํธ์ถ๋๊ณ ,end()๋ ๋์์ ํธ์ถ๋ฉ๋๋ค.
begin()๊ณผ end()๋ก ์ปดํฌ๋ํธ์ ๋ ๋๋ง ๋ก์ง์ ๋ํํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์ ํํ ์๊ฐ์ ์ธก์ ํ ์ ์์ต๋๋ค.
React ํ๋กํ์ผ๋ฌ ๋ฐ DevTools์ ํตํฉ
experimental_TracingMarker์ ์ฅ์ ์ React ํ๋กํ์ผ๋ฌ ๋ฐ DevTools์ ์๋ฒฝํ๊ฒ ํตํฉ๋๋ค๋ ๊ฒ์
๋๋ค. ์ถ์ ๋ง์ปค๋ก ์ฝ๋๋ฅผ ๊ณ์ธกํ๋ฉด ํ๋กํ์ผ๋ง ๋๊ตฌ๋ ํด๋น ๋ง์ปค์ ๊ด๋ จ๋ ํ์ด๋ฐ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
์ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ค๋ฉด:
- React DevTools๋ฅผ ์ฝ๋๋ค.
- ํ๋กํ์ผ๋ฌ ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ๋กํ์ผ๋ง ์ธ์ ์ ์์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ ์์ฉํ์ฌ ๊ณ์ธกํ ์ฝ๋ ์น์ ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
- ํ๋กํ์ผ๋ง ์ธ์ ์ ์ค์งํฉ๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ๊ฐ ์ปดํฌ๋ํธ์์ ์์๋ ์๊ฐ์ ๋ณด์ฌ์ฃผ๋ ํ์ผ ์ฐจํธ ๋๋ ์์ ์ฐจํธ๋ฅผ ํ์ํฉ๋๋ค. ์ ์ํ ์ถ์ ๋ง์ปค๋ ์ปดํฌ๋ํธ ํ์๋ผ์ธ ๋ด์ ํน์ ์ธ๊ทธ๋จผํธ๋ก ํ์๋์ด ํน์ ์ฝ๋ ๋ธ๋ก์ ์ฑ๋ฅ์ ๋๋ฆด๋ค์ดํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์ฌ์ฉ ์๋๋ฆฌ์ค
์ปดํฌ๋ํธ ๋ ๋๋ง ์๊ฐ ์ถ์ ์ธ์๋ experimental_TracingMarker๋ ๋ค์ํ ๊ณ ๊ธ ์๋๋ฆฌ์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. ๋น๋๊ธฐ ์์ ์ถ์
API ํธ์ถ ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ๊ธฐ๊ฐ์ ์ถ์ ํ์ฌ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ์ฒ๋ฆฌ ๋ก์ง์์ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ ์ ์์ต๋๋ค.
```javascript import React, { useState, useEffect, useRef } from 'react'; import { unstable_TracingMarker as TracingMarker } from 'react'; function DataFetcher() { const [data, setData] = useState(null); const fetchMarkerRef = useRef(new TracingMarker('FetchData', 'API์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ')); useEffect(() => { async function fetchData() { fetchMarkerRef.current.begin(); const response = await fetch('https://api.example.com/data'); const jsonData = await response.json(); setData(jsonData); fetchMarkerRef.current.end(); } fetchData(); }, []); return์ด ์์ ์์๋ API์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ถ์ ํ์ฌ API ํธ์ถ์ด ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ธ์ง ์๋ณํ ์ ์์ต๋๋ค.
2. ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ์
์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์คํ ์๊ฐ์ ์ถ์ ํ์ฌ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์ฑ๋ฅ ์ํฅ์ ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ ์๋นํ ๊ณ์ฐ ๋๋ DOM ์กฐ์๊ณผ ๊ด๋ จ๋ ๋ณต์กํ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ํนํ ์ ์ฉํฉ๋๋ค.
```javascript import React, { useRef } from 'react'; import { unstable_TracingMarker as TracingMarker } from 'react'; function MyButton() { const clickMarkerRef = useRef(new TracingMarker('ButtonClick', '๋ฒํผ ํด๋ฆญ ํธ๋ค๋ฌ')); const handleClick = () => { clickMarkerRef.current.begin(); // ์ผ๋ถ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ํ for (let i = 0; i < 1000000; i++) { // ์ฌ๊ธฐ์์ ์ผ๋ถ ๊ณ์ฐ } clickMarkerRef.current.end(); }; return ; } export default MyButton; ```์ด ์์ ์์๋ ๋ฒํผ ํด๋ฆญ ํธ๋ค๋ฌ์ ์คํ ์๊ฐ์ ์ถ์ ํ์ฌ ํธ๋ค๋ฌ์ ๋ก์ง์ด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋์ง ์๋ณํ ์ ์์ต๋๋ค.
3. Redux ์ก์ /์ฝํฌ ์ถ์
Redux๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Redux ์ก์ ๋๋ ์ฝํฌ์ ์คํ ์๊ฐ์ ์ถ์ ํ์ฌ ์ํ ์ ๋ฐ์ดํธ์ ์ฑ๋ฅ ์ํฅ์ ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ ํฌ๊ณ ๋ณต์กํ Redux ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
```javascript import { unstable_TracingMarker as TracingMarker } from 'react'; const myActionMarker = new TracingMarker('MyReduxAction', '๋ด Redux ์ก์ '); export const myAction = () => { return async (dispatch) => { myActionMarker.begin(); // ๋น๋๊ธฐ ์์ ์ํ await new Promise(resolve => setTimeout(resolve, 100)); dispatch({ type: 'MY_ACTION', payload: '๋ฐ์ดํฐ' }); myActionMarker.end(); }; }; ```์ด ์์ ์์๋ Redux ์ฝํฌ์ ์คํ ์๊ฐ์ ์ถ์ ํ์ฌ ์ฝํฌ์ ๋ก์ง ๋๋ ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ๊ฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋์ง ์๋ณํ ์ ์์ต๋๋ค.
experimental_TracingMarker ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
experimental_TracingMarker๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์ค๋ช ์ ์ธ ๋ง์ปค ID ์ฌ์ฉ: ์ถ์ ์ค์ธ ์ฝ๋ ์น์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด๋ ID๋ฅผ ์ ํํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋กํ์ผ๋ง ๋๊ตฌ์์ ๋ง์ปค๋ฅผ ๋ ์ฝ๊ฒ ์๋ณํ ์ ์์ต๋๋ค.
- ๊ณผ๋ํ ์ถ์ ๋ฐฉ์ง: ๋ชจ๋ ๋จ์ผ ์ฝ๋ ์ค์ ์ถ์ ํ๋ฉด ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ์ฌ ์ค์ ๋ณ๋ชฉ ํ์์ ์ ํํ ์ฐพ์๋ด๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ด์ฌ ์๋ ํน์ ์์ญ์ ์ถ์ ํ๋ ๋ฐ ์ง์คํ์ญ์์ค.
- ์กฐ๊ฑด๋ถ ์ถ์ ์ฌ์ฉ: ํ๊ฒฝ ๋ณ์ ๋๋ ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถ์ ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๋์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๊ฐ๋ฐ ๋๋ ์คํ ์ด์ง ํ๊ฒฝ์์ ์ฑ๋ฅ์ ์ถ์ ํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ ํ๋กํ์ผ๋ง ๋๊ตฌ์ ๊ฒฐํฉ:
experimental_TracingMarker๋ React ํ๋กํ์ผ๋ฌ ๋ฐ Chrome DevTools์ ๊ฐ์ ๋ค๋ฅธ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ๋ณด์ํฉ๋๋ค. ํฌ๊ด์ ์ธ ์ฑ๋ฅ ๋ถ์์ ์ํด ํจ๊ป ์ฌ์ฉํ์ญ์์ค. - ์คํ์ ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค: ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ์ด ๊ธฐ๋ฅ์ ์คํ์ ์ ๋๋ค. API๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฏ๋ก ์ฝ๋์ ๋ง๊ฒ ์กฐ์ ํ ์ค๋น๋ฅผ ํ์ญ์์ค.
์ค์ ์์ ๋ฐ ์ฌ๋ก ์ฐ๊ตฌ
experimental_TracingMarker๋ ๋น๊ต์ ์๋ก์ด ๊ธฐ์ ์ด์ง๋ง ์ฑ๋ฅ ์ถ์ ์๋ฆฌ๋ ์๋ง์ ์ค์ ์๋๋ฆฌ์ค์์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉ๋์์ต๋๋ค.
์์ 1: ๋๊ท๋ชจ ์ ์ ์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ต์ ํ
๋๊ท๋ชจ ์ ์ ์๊ฑฐ๋ ํ์ฌ์์ ์ ํ ์์ธ ํ์ด์ง์ ๋ ๋๋ง ์๊ฐ์ด ๋๋ฆฌ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ฑ๋ฅ ์ถ์ ์ ์ฌ์ฉํ์ฌ ์ ํ ์ถ์ฒ ํ์๋ฅผ ๋ด๋นํ๋ ํน์ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋งํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ถ๊ฐ ์กฐ์ฌ ๊ฒฐ๊ณผ ์ปดํฌ๋ํธ๊ฐ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ณต์กํ ๊ณ์ฐ์ ์ํํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๋ฌํ ๊ณ์ฐ์ ์๋ฒ ์ธก์ผ๋ก ์ฎ๊ธฐ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํจ์ผ๋ก์จ ์ ํ ์์ธ ํ์ด์ง์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค.
์์ 2: ์ฌ์ฉ์ ์ํธ ์์ฉ ์๋ต์ฑ ๊ฐ์
์์ ๋ฏธ๋์ด ํ๋ซํผ์์ ๊ฒ์๋ฌผ ์ข์์ ๋๋ ๋๊ธ ์ถ๊ฐ์ ๊ฐ์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ๋ํ ์๋ต์ ์ง์ฐ์ด ๋ฐ์ํ์ต๋๋ค. ์ด๋ฌํ ์ํธ ์์ฉ๊ณผ ๊ด๋ จ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ์ ํ ๊ฒฐ๊ณผ ํน์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ถํ์ํ ๋ค์ ๋ ๋๋ง์ ๋ง์ด ํธ๋ฆฌ๊ฑฐํ๊ณ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋ก์ง์ ์ต์ ํํ๊ณ ๋ถํ์ํ ๋ค์ ๋ ๋๋ง์ ๋ฐฉ์งํจ์ผ๋ก์จ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ต์ฑ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค.
์์ 3: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ๋ณ๋ชฉ ํ์ ์๋ณ
๊ธ์ต ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ณด๊ณ ๋์๋ณด๋์ ๋ฐ์ดํฐ ๋ก๋ฉ ์๊ฐ์ด ๋๋ฆฌ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ํจ์์ ์คํ ์๊ฐ์ ์ถ์ ํ ๊ฒฐ๊ณผ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ฟผ๋ฆฌ ๋ก์ง์ ๋ค์ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ๋ก๋ฉ ์๊ฐ์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
๊ฒฐ๋ก
experimental_TracingMarker ๊ด๋ฆฌ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ๋ํ ๋ ๊น์ ํต์ฐฐ๋ ฅ์ ์ป์ผ๋ ค๋ React ๊ฐ๋ฐ์์๊ฒ ์ ์ฉํ ๋๊ตฌ์
๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์ ์ ์ ์ถ์ ๋ง์ปค๋ฅผ ์ ์ํ๊ณ ๊ธฐ์กด ํ๋กํ์ผ๋ง ๋๊ตฌ์ ํตํฉํ ์ ์๋๋ก ์ง์ํจ์ผ๋ก์จ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์์ง ์คํ์ ์ด์ง๋ง React์ ์ฑ๋ฅ ๋๊ตฌ ์ ์์ ์์ด ์ค์ํ ์ง์ ์ ๋ํ๋ด๋ฉฐ React ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฑ๋ฅ ์ต์ ํ์ ๋ฏธ๋๋ฅผ ์ฟ๋ณผ ์ ์์ต๋๋ค.
experimental_TracingMarker๋ฅผ ์คํํ ๋ ๊ด์ฌ ์๋ ํน์ ์์ญ์ ์ถ์ ํ๊ณ ์ค๋ช
์ ์ธ ๋ง์ปค ID๋ฅผ ์ฌ์ฉํ๊ณ ํฌ๊ด์ ์ธ ์ฑ๋ฅ ๋ถ์์ ์ํด ๋ค๋ฅธ ํ๋กํ์ผ๋ง ๋๊ตฌ์ ๊ฒฐํฉํ๋ ๋ฐ ์ง์คํ์ญ์์ค. ์ฑ๋ฅ ์ถ์ ๊ธฐ์ ์ ์์ฉํจ์ผ๋ก์จ ์ฌ์ฉ์๋ฅผ ์ํด ๋ ๋น ๋ฅด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋๊ณ ์ฆ๊ฑฐ์ด React ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๋ฉด์ฑ ์กฐํญ: ์ด ๊ธฐ๋ฅ์ ์คํ์ ์ด๋ฏ๋ก ํฅํ React ๋ฒ์ ์์ API๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ต์ ์ ๋ณด๋ ํญ์ ๊ณต์ React ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.